//package com.guanzi.server.controller;
//
//import com.baomidou.mybatisplus.core.toolkit.StringUtils;
//import com.guanzi.server.config.JwtConfig;
//import com.guanzi.server.util.RespBean;
//import org.springframework.web.bind.annotation.GetMapping;
//import org.springframework.web.bind.annotation.PostMapping;
//import org.springframework.web.bind.annotation.RequestParam;
//import org.springframework.web.bind.annotation.RestController;
//import com.alibaba.fastjson.JSONObject;
//
//import javax.annotation.Resource;
//import javax.servlet.http.HttpServletRequest;
//
///**
// * @author Xg
// * @date 2021/6/4 10:51
// */
//@RestController
//public class TokenController {
//
//    @Resource
//    private JwtConfig jwtConfig ;
//
//    /**
//     * 用户登录接口
//     * @param userName
//     * @return
//     */
//    @PostMapping("/login")
//    public RespBean login (@RequestParam("userName") String userName){
//        JSONObject json = new JSONObject();
//
//        /** 验证userName，passWord和数据库中是否一致，如不一致，直接return ResultTool.errer(); 【这里省略该步骤】*/
//
//        // 这里模拟通过用户名和密码，从数据库查询userId
//        // 这里把userId转为String类型，实际开发中如果subject需要存userId，则可以JwtConfig的createToken方法的参数设置为Long类型
//        String userId = 1 + "";
//        String token = jwtConfig.createToken(userId) ;
//        if (!StringUtils.isEmpty(token)) {
//            json.put("token",token) ;
//        }
//        jwtConfig.setHeader("");
//        return RespBean.success("成功！",json) ;
//    }
//
//    /**
//     * 需要 Token 验证的接口
//     */
//    @PostMapping("/info")
//    public RespBean info (){
//        return RespBean.success("info") ;
//    }
//
//    /**
//     * 根据请求头的token获取userId
//     * @param request
//     * @return
//     */
//    @GetMapping("/getUserInfo")
//    public RespBean getUserInfo(HttpServletRequest request){
//        String usernameFromToken = jwtConfig.getUsernameFromToken(request.getHeader("token"));
//        return RespBean.success(usernameFromToken) ;
//    }
//
//    /*
//        为什么项目重启后，带着之前的token还可以访问到需要info等需要token验证的接口？
//        答案：只要不过期，会一直存在，类似于redis
//     */
//
//}
